perm filename DFTP.MRC[UP,DOC]8 blob
sn#285534 filedate 1977-05-29 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00024 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002
C00004 00003
C00007 00004
C00011 00005
C00015 00006
C00018 00007
C00021 00008
C00023 00009
C00026 00010
C00029 00011
C00032 00012
C00035 00013
C00038 00014
C00041 00015
C00044 00016
C00047 00017
C00050 00018
C00053 00019
C00055 00020
C00056 00021
C00058 00022
C00061 00023
C00064 00024
C00065 ENDMK
C⊗;
Computer Corporation of America
Technical Bulletin 1
DFTP User's Guide
May 1977
W. R. Bush
Overview
The Datacomputer is a shared large-scale data base utility
offering data storage and data management services to other
computers on the Arpanet. The system is a centralized facility
for archiving data, for sharing data among various network hosts,
and for providing inexpensive on-line storage for sites needing
to supplement their local capability. The Datacomputer is
implemented on dedicated hardware and comprises a separate
computing system specialized for data management. The system can
be viewed logically as a closed box shared by multiple external
processors and accessed in a standard notation called
Datalanguage.
The Datacomputer File Transfer Program (DFTP) provides a
convenient method for storing and retrieving local files on the
Datacomputer via the Arpanet. DFTP translates simple user
commands into Datalanguage, sends the Datalanguage and data to
the Datacomputer, processes the messages and data returned from
the Datacomputer, and notifies the user of the results.
The Directory
The DFTP Datacomputer directory is a tree, with site nodes
beneath a common root node, user nodes beneath site nodes, and
optional subdirectories of arbitrary depth and breadth beneath
- 1 -
user nodes. Files are stored in special leaf nodes called
<FILES> nodes. Pictorially,
<ROOT>
/ \
SITE SITE ...
/ \
USER USER ...
/ \
<FILES> SUBDIRECTORY ...
/ \
<FILES> SUBDIRECTORY ...
\
<FILES> ...
The <FILES> nodes are the repositories of all data. To avoid
ambiguity, there can be only one <FILES> node directly under any
given user or subdirectory node.
There are two basic types of commands -- those that
reference only nodes and those that reference files within a
<FILES> node. Node level commands are used for manipulating the
←←←← ←←←←← ←←←←←←←←
global directory structure of sites, users, and subdirectories.
A node level command takes a node path (described below) as its
←←←← ←←←←
argument. File level commands are used for storing, retrieving,
←←←← ←←←←← ←←←←←←←←
and modifying files within a <FILES> node. A file level command
takes as its argument a file name (described below) or a node
←←←← ←←←←
path followed by a file name, called a file path (for referencing
←←←← ←←←←
files under nodes other than the defaults used by DFTP).
Referencing Nodes
The mechanism for referencing a node, called a node path, is
←←←← ←←←←
a means of specifying a path through the directory tree. It
consists of a context and a node list.
←←←←←←← ←←←← ←←←←
- 2 -
Contexts provide convenient anchoring points for node
←←←←←←←←
references. The three contexts are top, attach, and connect,
←←← ←←←←←← ←←←←←←←
indicated by '<<<', '<<', and '<' respectively.
The top context provides an absolute starting point for node
references. It anchors a reference to the highest fixed star in
the directory firmament -- the <ROOT> node. One may always
reference any node in the directory by indicating the top context
and then listing all the nodes (the site, user, and
subdirectories) between the <ROOT> node and the node of interest.
The context also allows reference to nodes higher in the tree
(sites and users) than the other contexts.
The attach context is set, automatically at the beginning of
a session by DFTP, to be the user's user node. Thus references
to subdirectories, if prefaced with the attach context, need not
include the site and user (as compared with the top context).
The context can be changed by the ATTACH command, usually to
another user. The attach context provides a fixed point above a
user's subdirectories for manipulating and choosing among them.
The connect context is set, automatically at the beginning
of a session by DFTP, to be the same as the attach context. It
is conceptually similar to the attach context in being a movable
point in the directory, but it is usually lower in the tree,
usually a subdirectory. It can be changed by the CONNECT
command, usually to another subdirectory. It is usually the
point from which files are referenced.
Contexts need not be explicitly given by the user when
specifying a node path. For the default contexts provided by
- 3 -
DFTP see the Command Input section. Note also that a context can
be a complete node reference. A node may be referenced by
specifying only a context (without a node list) if that context
has been previously set to that node. For example, one's user
node may be referenced via the attach context.
A node list consists of a sequence of node names
←←←← ←←←←
(consecutive levels in the tree) separated by '>'s. A password
may be necessary in acquiring access privileges at a particular
node, in which case the node name is followed by ':' and the
password. Sets of nodes can be referenced -- all nodes at a
particular level are indicated by '*', and all inferior nodes are
designated by '**' (which can occur only at the end of the node
list).
For example:
<<<CCA>HACKER:DINKUP>WALDO
Starting at the top context, the node path references the
subdirectory WALDO under user HACKER at site CCA (with the
password DINKUP supplied to gain access to HACKER).
<<WALDO>**
Starting at the attach context, the node path references the
subdirectory WALDO and all inferior nodes. Note that WALDO is
included -- the REMOVE command, for example, would delete the
node WALDO as well as its inferiors.
- 4 -
Referencing Files
File names have the same form as TENEX file names: a name,
←←←← ←←←←←
an optional extension, and an optional version number. The name
is separated from the extension by a period, and the extension
from the version number by a semicolon. File sets may be
indicated by an asterisk in any or all of the fields.
Version numbers allow unambiguous reference of files that
have the same name and extension. DFTP assigns each file a
version number which is unrelated to its TENEX or TOPS-20 version
number. Later versions of a file with the same name and
extension receive higher version numbers. If the user does not
explicitly supply a version number in referencing an existing
file, DFTP provides a default.
All commands that accept a file name as input can
alternatively accept a file path, which consists of a node path
←←←← ←←←←
followed by a file name. The two parts are separated by '>',
unless the node path is only a context, in which case the '>' is
omitted.
Note that the user never specifies a <FILES> node explicitly
in referencing a file. If a file path is given, DFTP expands the
reference to refer to the given file in the <FILES> node under
the given node. If only a file name is given, DFTP expands the
reference to refer to the given file in the <FILES> node under
the default context node.
For example:
- 5 -
MAIL.TXT
The file name references the file MAIL.TXT in the <FILES> node
under the connect context.
<*.SAV;*
The file name references all versions of all files with the
extension SAV in the <FILES> node under the connect context.
<<MACROS>COMMON>SYSMAC.MAC
Starting at the attach context (presumably a user node), the file
path references the file SYSMAC.MAC in the <FILES> node under the
COMMON subdirectory of the MACROS subdirectory.
Command Input
DFTP command input is similar to TENEX and TOPS-20, with
command recognition and a combination of TENEX and TOPS-20
editing controls. In particular,
<control-A> and <rubout> delete a character,
<control-R> retypes a line,
<control-U> and <control-X> delete a line,
<escape> and <space> are separators, and
<carriage return>, <line feed>
and <end of line> are terminators.
Node-oriented commands take node paths as their arguments.
File-oriented commands take file names or file paths as their
arguments.
- 6 -
The connect context is the default context for all
commands except ATTACH, the default for which is the top context,
and BIG and CONNECT, which have as their defaults the the attach
context.
Many commands have default arguments and trailers which
are invoked by giving a space or escape as the argument or
argument terminator. The default argument is '<<' for the
CONNECT command, '<' for EXPUNGE, and '**' for LIST and
REMOVE, which is also the default trailer. For DIRECTORY, GET,
PUT, DELETE, UNDELETE, and EXAMINE the default argument and
trailer (after a '>') is '*.*;*'. The default option for
DIRECTORY and LIST is TERSE.
Node-Oriented Commands
The ATTACH command sets the attach context (and connect
context) and initiates Datacomputer accounting functions.
The BIG command is used for indicating that a subdirectory
is to be a large one. It creates the subdirectory node given as
its argument if the node does not already exist, creates under
that node an expanded <FILES> node (twice the size of the
standard one, with the names of the files inverted for faster
retrieval), and sets the user's connect context to be the given
subdirectory node.
The CONNECT command sets the connect context (and creates
new subdirectories).
- 7 -
The EXPUNGE command removes files marked as deleted from the
<FILES> node under the node given as the command argument. If
the <FILES> node contains no files (deleted or undeleted) it is
removed from the Datacomputer directory.
The LIST command lists Datacomputer nodes (sites, users,
subdirectories, and <FILES>) and information about them. The
information displayed by the VERBOSE option comes directly from
the Datacomputer.
The REMOVE command removes nodes from the Datacomputer
directory. They must either have no inferior nodes (including
<FILES> nodes), or be part of a node set that includes inferior
nodes ('**'). Data stored under removed nodes will also be
deleted.
File-Oriented Commands
File deletion operates as with TENEX and TOPS-20. The
DELETE command marks files as deleted, but does not eliminate
them. They can be listed via the VERBOSE option of the DIRECTORY
command, and their deleted status can be changed by the UNDELETE
command. The removal of deleted files is deferred until an
EXPUNGE is performed on the <FILES> node containing them. The
default version number is the lowest undeleted, unless a file set
is indicated, in which case all versions in the set are deleted.
The DIRECTORY command lists files and information about
them. The VERBOSE option lists deleted and undeleted files (with
- 8 -
deleted ones indicated by 'D' after the name), the date and time
created (for TOPS-10 and ITS sites), the date and time last
written (for TENEX and TOPS-20 sites), the date and time stored,
and the size. For files stored from TENEX and TOPS-20 sites the
size information is in the form <number of bytes>(<byte size>).
For files stored from TOPS-10 and ITS sites the information is in
the form <number of 36 bit words>(-<data mode)). The TERSE
option lists undeleted files and their sizes (in the same form as
the VERBOSE option). The DELETED option is the equivalent of
TERSE for deleted files. The default version number is the
highest undeleted, unless a file set is indicated, in which case
information for all versions in the set is listed.
The EXAMINE command lists on the user's terminal the
contents of the files specified as the command argument. The
command also takes as an argument the number of lines between
'More?' prompts, which are used to terminate listing. The
default number of lines is 20 or, if the EXAMINE command has been
invoked previously, the number given then. The listing of an
individual file may be terminated by answering in the negative
the 'More?' prompt, and the listing of the current and remaining
files may be aborted by answering the prompt with 'A'. The
default version number is the highest undeleted, unless a file
set is indicated, in which case all versions in the set are
listed.
The GET and PUT commands retrieve and store local disk files
on the Datacomputer. Files of any type (text or binary image, for
example) can be stored. If a synonym is not supplied, the
- 9 -
Datacomputer file name is used as the local file name. If the
first argument to either command is completed with an escape or a
space, the synonym option is invoked and the commands then
operate in the form
GET Datacomputer file [AS] local file, and
PUT local file [AS] Datacomputer file.
For the GET command the default version number is the highest
undeleted, unless a file set is indicated, in which case all
versions of the set are retrieved. The PUT command sets the
version number of the file being stored to be one greater than
the highest version of existing files with the same name and
extension. Note that a file set indicated in any file name field
is treated as if all existing files had the same field -- storing
*.* results in the stored files receiving version numbers one
greater than the highest version number found in any existing
file.
The RENUMBER command changes a file's version number. It is
the only mechanism available to the user for affecting version
numbers. The user specifies the file to be changed, after which
DFTP asks for the new version number. File sets may be
specified, but only if a version number is explicitly given with
the file set. The default old version number is the lowest
undeleted. The default new version number is 1.
The UNDELETE command rescinds a file's deleted status. The
default version number is the highest deleted, unless a file set
is indicated, in which case all versions in the set are
undeleted.
- 10 -
Miscellaneous Commands
The SHOW-DATALANGUAGE and NO-DATALANGUAGE commands
respectively allow and inhibit the output to the user's terminal
of the messages sent to and received from the Datacomputer.
Data transfer rates are calculated and given to the user
when the TIME-TRANSFERS command has been invoked. The
calculations are avoided with the UNTIME-TRANSFERS command.
QUIT exits gracefully from DFTP, closing network
connections.
Responses
There are three types of messages that DFTP gives the user.
Comments surrounded by square brackets are primarily
informational messages, and are never errors. Parentheses
enclose non-fatal errors and informational Datacomputer messages,
such as '(LEBAR2: ERROR: NO SUCH FILE)', resulting from an
attempt to DELETE a nonexistent file, and '(SXPF9: STAGING DATA
FOR FILE = DFTP.CCA.DFTP.<FILES>)', indicating that data is being
moved from tertiary mass memory to secondary buffer memory.
These messages come directly from the Datacomputer, indicated by
the name and colon at the head of the message. Fatal error
messages are surrounded by question marks, and of course never
occur.
- 11 -
Site Dependent Features
For the TENEX and TOPS-20 versions, the EXEC command
provides the user with an inferior exec, which is flushed when
the user returns to DFTP. Where a local file name is possible
(in the GET and PUT commands) an initial space or escape invokes
name recognition, indicated by a '>' prompt. A <control-O> can
be used to halt the output from the LIST and DIRECTORY commands.
For the TOPS-10 version, the LOCAL-DIRECTORY command lists
the user's local file directory. The LOCAL-STRUCTURE command
sets the file structure (e.g. DSKC:), and the LOCAL-USER command
sets the project and programmer. Both commands affect the GET,
PUT, and LOCAL-DIRECTORY commands.
For the ITS version the LOCAL-CONNECT command specifies
which SNAME (local directory) is used for the GET and PUT
commands. If a carriage return is typed with no argument, the
user's default SNAME is used. The TERSE command (unset by the
VERBOSE command) suppresses informational Datacomputer messages
(such as the staging message below), and performs a
NO-DATALANGUAGE and an UNTIME-TRANSFERS.
Access Control
DFTP access control uses a subset of the full Datacomputer
mechanism. A complete discussion of Datacomputer privilege
facilities can be found in the current Datacomputer User Manual.
- 12 -
Access privileges are defined in privilege blocks attached
to nodes in the directory. A node may have any number of
privilege blocks attached to it. Each block consists of a set of
privileges and a class of users to whom that set applies. DFTP
provides two classes of access, control and read. Control allows
users to ATTACH to a node, CREATE and ALLOCATE nodes below that
node, CHANGE privileges at and below that node, and read, write,
and delete data stored below that node. Read only allows users
to ATTACH to a node and read data stored under it. All other
users are denied everything but the ability to LIST nodes. Users
are identified either by passwords, or by their network identity
(defined by the host and socket from which they access the
Datacomputer), or both. Some systems enforce assignment of
socket numbers according to the user's identity on that system,
thus providing convenient automatic identification to DFTP.
When a user attemps to access a node, or manipulate nodes
and data under it, the Datacomputer compares the user with the
user classes identified in privilege blocks on that node, and
assigns the corresponding class of privileges. If no set matches
the user, no privileges are allowed. the privilege blocks are
scanned in the order of creation, and if a user matches more than
one block, the first takes effect. Access controls are set by
the CHANGE and CREATE commands, described in the following
section.
- 13 -
Privileged Commands
Privileged commands are made available via the ENABLE
command. Its action is marked by a change in the command prompt
from '*' to '!'. The DISABLE command undoes the effect of
ENABLE.
The ALLOCATE command is used to set the maximum number of
megabits a user may consume. It can also be used to set
subdirectory limits. Allocations are made and reported in
megabits -- 1,013,760 bits to be precise, the size of a block on
the Datacomputer's tertiary memory. A megabit is roughly equal
to 55 512-word pages, or 220 128-word blocks.
The CHANGE command redefines the access control information
for a given node. It deletes all existing access control
information (privilege blocks), then builds new blocks
interactively with the user. The PROTECTION subcommand of the
LIST command can be used to examine the privilege blocks of
nodes.
The CREATE command is used to create a node for a new user.
After the node has been created, the access control is specified
as with the CHANGE command.
The LINK command allows the user to send Datalanguage to the
Datacomputer. Each line of input, prompted by '>', is sent
directly to the Datacomputer, without any processing by DFTP.
Return to DFTP command input is achieved by inputting a null
line.
- 14 -
Examples Using Privileged Commands
;Attach to a node.
; (gain control at site CCA by supplying the proper password)
*ATTACH <<<CCA:
*ENABLE
;Create a user and privileges.
; (the first privilege allows creation and deletion for
; local user HACKER upon supplying the password "ETAOIN")
; (the second privilege allows creation and deletion for
; anyone from Harvard (host 11) upon supplying the password "SHRDLU")
; (the third privilege allows anyone read)
!CREATE HACKER
[OK]
Add a new privilege? Yes
Allow control? Yes
Restrict via network? Yes
Restrict via local host? Yes
Restrict via user? Yes
User: HACKER
Restrict via password? Yes
Password: ETAOIN
[OK]
Add a new privilege? Yes
Allow control? Yes
Restrict via network? Yes
Restrict via local host? No
Site: 11
Restrict via user? No
Restrict via password? Yes
Password: SHRDLU
[OK]
Add a new privilege? Yes
Allow control? No
Restrict via network? No
Restrict via password? No
[OK]
Add a new privilege? No
;List the privileges.
; (in Datacomputer format (passwords are never listed))
!LIST HACKER
!!PROTECTION
CCA
HACKER
] (1),U=**,H=31,S=12582928,G=CLWRA
] (2),U=**,H=9,S=ANY,G=CLWRA
] (3),U=**,H=ANY,S=ANY,G=LR
- 15 -
;Replace the privileges.
; (the first privilege allows creation and deletion for
; local user HACKER)
; (the second privilege allows anyone read
; upon supplying the password "WALDO")
; (the "[OK]" indicates that the previous privileges have been deleted)
!CHANGE HACKER
[OK]
Add a new privilege? Yes
Allow control? Yes
Restrict via network? Yes
Restrict via local host? Yes
Restrict via user? Yes
User: HACKER
Restrict via password? No
[OK]
Add a new privilege? Yes
Allow control? No
Restrict via network? No
Restrict via password? Yes
Password: WALDO
[OK]
Add a new privilege? No
;List the privileges.
!LIST HACKER
!!PROTECTION
CCA
HACKER
] (1),U=**,H=31,S=12582928,G=CLWRA
] (2),U=**,H=ANY,S=ANY,G=LR
;List all information.
; ("MX-U" indicates the maximum allocation in megabits)
!LIST HACKER
!!VERBOSE
CCA
HACKER
] MX-U=10.00 CHRG=0.00
] IN-N=0 IN-F=0
] CREA=761101052805
;Change the allocation.
; (decrease the allocation from 10 megabits to 2 megabits)
!ALLOCATE HACKER
[Megabits:2]
;List all information.
!LIST HACKER
!!VERBOSE
CCA
HACKER
] MX-U=2.00 CHRG=0.00
] IN-N=0 IN-F=0
] CREA=761101052805
- 16 -
Command Summary
ATTACH <node path>
BIG <node path>
CONNECT <node path> (1)
DELETE <file path> (4) (5)
DIRECTORY <file path> (4) (6) (10)
DELETED
TERSE
VERBOSE
EXAMINE <file path> (4) (6)
Lines per page: <decimal integer> (8)
More? <Y or N or A>
EXPUNGE <node path> (2)
GET (RETRIEVE) <file path> [local file name synonym] (4) (6) (11)
LIST <node path> (3) (10)
TERSE
VERBOSE
NO-DATALANGUAGE
PUT (STORE) <file path> [remote file path synonym] (4) (11)
QUIT
REMOVE <node path> (3)
RENUMBER <file path> (5)
Version number: <decimal integer> (9)
SHOW-DATALANGUAGE
TIME-TRANSFERS
UNDELETE <file path> (4) (7)
UNTIME-TRANSFERS
- 17 -
Site Dependent Command Summary
EXEC (12)
LOCAL-DIRECTORY (13)
LOCAL-STRUCTURE <string> (13)
LOCAL-USER (13)
Project: <octal integer> (14)
Programmmer: <octal integer> (14)
LOCAL-CONNECT <string> (15)
TERSE (15)
VERBOSE (15)
- 18 -
Privileged Command Summary
ALLOCATE <node path>
Megabits: <decimal integer>
CHANGE <node path>
Add a new privilege? <Y or N>
Allow write? <Y or N>
Restrict via network? <Y or N>
Restrict via local host? <Y or N>
Host number (octal): <octal integer>
(if host not local)
Restrict via user? <Y or N>
Socket number (octal): <octal integer>
(if user restricted and host not local)
User: <user name> (16)
(if user restricted and host local)
Restrict via password? <Y or N>
Password: <string>
CREATE <node path>
(see CHANGE)
DISABLE
ENABLE
LINK (17)
LIST <node path>
PROTECTION
- 19 -
Summary Notes
Required input is indicated by angle brackets.
Optional input is indicated by square brackets.
The connect context is the default context for all
commands except ATTACH, the default for which is the
top context, and BIG and CONNECT, which have as their
defaults the the attach context.
(1) The default argument is <<.
(2) The default argument is <.
(3) The default argument (and trailer) is **.
(4) The default argument (and trailer) is *.*;*.
(5) The default version is the lowest undeleted.
(6) The default version is the highest undeleted.
(7) The default version is the highest deleted.
(8) The default page size is 20 or the last size input.
(9) The default version number is 1.
(10) On TENEX and TOPS-20 sites, a <control-O> will abort
output.
(11) On TENEX and TOPS-20 sites, an initial <space> or
<escape> as file name input invokes local file name
recognition.
(12) Available on TENEX and TOPS-20 sites only.
(13) Available on TOPS-10 sites only.
(14) The argument is a <string> on SAIL sites.
(15) Available on ITS sites only.
(16) A directory name if TENEX or TOPS-20, a programmer
number if TOPS-10 (not used on SAIL or ITS).
(17) A null input line returns the user to command mode.
- 20 -
Paths
<node path> :: = <context>
| <node list>
| **
| <context> **
| <context> <node list>
| <context> <node list> > **
←
| <node list> > **
←
<context> ::= < (connect context)
←
| << (attach context)
←←
| <<< (top context)
←←←
<node list> ::= <node>
| <node> > <node list>
←
<node> ::= <name>
| <name> : <password>
| *
<file path> ::= <file name>
| <context> <file name>
| <node list> > <file name>
←
| <context> <node list> > <file name>
←
<file name> ::= <file>
| <file> .
| <file> . <extension>
| <file> ; <version>
| <file> . ; <version>
| <file> . <extension> ; <version>
<file> ::= <name> | *
<extension> ::= <name> | *
<version> ::= <number> | *
Notes:
Underscored angle brackets are literal characters and
accepted by DFTP as such.
Any printing ASCII characters except <, >, ., :, *, ?, ',
and " may be used in a <name>.
Any printing ASCII characters (plus space) except >, ., ',
and " may be used in a <password>.
- 21 -